package com.example.demo.utils;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * 图片工具类
 */
public class ImagesUtils {
    /**
     * 根据指定的文本创建图片
     * 带换行功能
     */
    public static File createImage(String text, Color color,Integer fontSize, Float degree, Float alpha,int width,int height ,int every_line) throws IOException {
        Font font = new Font("宋体", Font.PLAIN, fontSize);

        // 创建图片
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
        //创建图片画布
        Graphics2D g = image.createGraphics();
        // 增加下面代码使得背景透明
        image = g.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
        g.dispose();
        g = image.createGraphics();
        g.setColor(new Color(242, 242, 242));
        // 设置透明度
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
        // 设置画笔字体
        g.setFont(font);
        g.translate(10, 10);
        g.setColor(color);
        //接收值，根据换行符转换
        String[] strs=text.split("\n");
        //定义的行数,如何是2行说明需要换行
        if(strs.length==every_line){
            //循环 字符内容 生成图片
            for (int i = 0; i <strs.length; i++) {
                // 描绘字符串
                g.drawString(strs[i], i*20,  (i + 1) * 30);
            }
        }else{
            //不需要换行
            g.drawString(text, 0, font.getSize());
        }
        g.dispose();

        File imageFile = createFile();

        ImageIO.write(image, "png", imageFile);

        return imageFile;
    }
    /**
     * 创建文件
     *
     * @return {@link File}
     */
    private static File createFile() {
        String property = System.getProperty("java.io.tmpdir");
        System.out.println("property + \"/kbs-watermark-\" + DateUtils.dates(new Date(),\"yyyy-MM-dd\")="+property + "/kbs-watermark-" + DateUtils.dates(new Date(),"yyyy-MM-dd"));
        return new File(property + "/kbs-watermark-" + DateUtils.dates(new Date(),"yyyy-MM-dd") + ".png");
    }
}
